nethackfandomcom-20200214-history
Source:NetHack 2.3e/rm.h
Below is the full text to rm.h from the source code of NetHack 2.3e. To link to a particular line, write [[NetHack 2.3e/rm.h#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code 1. /* SCCS Id: @(#)rm.h 2.3 88/03/29 2. /* Copyright © Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. 4. /* 5. * The dungeon presentation graphics code and data structures were rewritten 6. * and generalized for NetHack's release 2 by Eric S. Raymond (eric@snark) 7. * building on Don G. Kneller's MS-DOS implementation. See options.c for 8. * the code that permits the user to set the contents of the symbol structure. 9. */ 10. 11. /* Level location types */ 12. #define HWALL 1 13. #define VWALL 2 14. #define SDOOR 3 15. #define SCORR 4 16. #define LDOOR 5 17. #define POOL 6 /* not yet fully implemented */ 18. /* this should in fact be a bit like lit */ 19. #define DOOR 7 20. #define CORR 8 21. #define ROOM 9 22. #define STAIRS 10 23. #define FOUNTAIN 11 24. #define THRONE 12 25. #define SINK 13 26. 27. /* 28. * Avoid using the level types in inequalities: 29. * these types are subject to change. 30. * Instead, use one of the macros below. 31. */ 32. #define IS_WALL(typ) ((typ) <= VWALL) 33. #define IS_ROCK(typ) ((typ) < POOL) /* absolutely nonaccessible */ 34. #define ACCESSIBLE(typ) ((typ) >= DOOR) /* good position */ 35. #define IS_ROOM(typ) ((typ) >= ROOM) /* ROOM or STAIRS */ 36. #ifdef RPH 37. /* zappable positions include 1 in 5 doors. */ 38. #define ZAP_POS(typ) ((typ) >= POOL || (((typ) DOOR) && !rn2(5))) 39. #define SPACE_POS(typ) ((typ) > DOOR) 40. #else 41. #define ZAP_POS(typ) ((typ) > DOOR) 42. #endif 43. #define IS_POOL(typ) ((typ) POOL) 44. #define IS_THRONE(typ) ((typ) THRONE) 45. #define IS_FOUNTAIN(typ) ((typ) FOUNTAIN) 46. #define IS_SINK(typ) ((typ) SINK) 47. 48. /* 49. * The level-map symbols may be compiled in or defined at initialization time 50. */ 51. #ifndef GRAPHICS 52. 53. #define STONE_SYM ' ' 54. #define VWALL_SYM '|' 55. #define HWALL_SYM '-' 56. #define TLCORN_SYM '+' 57. #define TRCORN_SYM '+' 58. #define BLCORN_SYM '+' 59. #define BRCORN_SYM '+' 60. #define DOOR_SYM '+' 61. #define ROOM_SYM '.' 62. #ifdef QUEST 63. # define CORR_SYM ':' 64. #else 65. # define CORR_SYM '#' 66. #endif 67. #define UP_SYM '<' 68. #define DN_SYM '>' 69. #define TRAP_SYM '^' 70. #define POOL_SYM '}' 71. #define FOUNTAIN_SYM '{' 72. #define THRONE_SYM '\\' 73. #define WEB_SYM '"' 74. #define SINK_SYM '#' 75. #else /* GRAPHICS */ 76. 77. /* screen symbols for using character graphics. */ 78. struct symbols { 79. unsigned char stone, vwall, hwall, tlcorn, trcorn, blcorn, brcorn; 80. unsigned char door, room, corr, upstair, dnstair, trap; 81. #ifdef FOUNTAINS 82. unsigned char pool, fountain; 83. #endif 84. #ifdef NEWCLASS 85. unsigned char throne; 86. #endif 87. #ifdef SPIDERS 88. unsigned char web; 89. #endif 90. #ifdef SINKS 91. unsigned char sink; 92. #endif 93. }; 94. extern struct symbols showsyms, defsyms; 95. 96. #define STONE_SYM showsyms.stone 97. #define VWALL_SYM showsyms.vwall 98. #define HWALL_SYM showsyms.hwall 99. #define TLCORN_SYM showsyms.tlcorn 100. #define TRCORN_SYM showsyms.trcorn 101. #define BLCORN_SYM showsyms.blcorn 102. #define BRCORN_SYM showsyms.brcorn 103. #define DOOR_SYM showsyms.door 104. #define ROOM_SYM showsyms.room 105. #define CORR_SYM showsyms.corr 106. #define UP_SYM showsyms.upstair 107. #define DN_SYM showsyms.dnstair 108. #define TRAP_SYM showsyms.trap 109. #define POOL_SYM showsyms.pool 110. #define FOUNTAIN_SYM showsyms.fountain 111. #define THRONE_SYM showsyms.throne 112. #define WEB_SYM showsyms.web 113. #define SINK_SYM showsyms.sink 114. #endif 115. 116. #define ERRCHAR ']' 117. 118. #define MAXPCHARS 17 /* maximum number of mapped characters */ 119. 120. #define IS_CORNER(x) ((x) TLCORN_SYM || (x) TRCORN_SYM \ 121. || (x) BLCORN_SYM || (x) BRCORN_SYM) 122. 123. /* 124. * The structure describing a coordinate position. 125. * Before adding fields, remember that this will significantly affect 126. * the size of temporary files and save files. 127. */ 128. #ifdef MSDOS 129. /* Save disk space by using unsigned char's instead of unsigned ints 130. */ 131. struct rm { 132. uchar scrsym; 133. unsigned typ:5; 134. unsigned new:1; 135. unsigned seen:1; 136. unsigned lit:1; 137. }; 138. #else 139. struct rm { 140. char scrsym; 141. Bitfield(typ,5); 142. Bitfield(new,1); 143. Bitfield(seen,1); 144. Bitfield(lit,1); 145. }; 146. #endif /* MSDOS /**/ 147. extern struct rm levlCOLNOROWNO; 148. 149. #ifdef DGK 150. #define ACTIVE 1 151. #define SWAPPED 2 152. 153. struct finfo { 154. int where; 155. long time; 156. long size; 157. }; 158. extern struct finfo fileinfo[]; 159. #define ZFINFO { 0, 0L, 0L } 160. #endif rm.h